package com.io.serializable_;

import org.junit.Test;

import java.io.*;

public class ObjectOutputStream_ {
    public static void main(String[] args) {
    }

    @Test
    public void add() throws IOException {
        // 序列化后，保存的文件格式，不是纯文本，而是按照它规定的格式来保存
        String filePath = "E:\\test\\data.java";

        // 序列化操作
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath));

        // 序列化数据到 文件 写入内容
        // 序列化的对象必须要实现 Serializable接口
        oos.writeInt(100); // int -> Integer (实现了 Serializable 接口)
        oos.writeBoolean(true); // bool -> Boolean (实现了 Serializable 接口)
        oos.writeUTF("hello,yemingbao"); // String (实现了 Serializable 接口)
        oos.writeChar('a'); // char -> Character(实现了 Serializable 接口)
        oos.writeDouble(9.55); // double -> Double (实现了 Serializable 接口)

        // 添加自定义对象
        // 如果没有实现 Serializable 接口，抛出异常：NotSerializableException
        oos.writeObject(new Dog("旺财",10));
        // 关闭外层资源流，实质底层会自动关闭 FileOutputStream 资源流
        oos.close();
        System.out.println("数据保存完毕（序列化）");
    }
}
